Systems and methods for horizon identification in an image

ABSTRACT

Systems and method of identifying a horizon depicted in an image are presented herein. Information defining an image may be obtained. The image may include visual content comprising an array of pixels. The array may include pixel rows. Parameter values for a set of pixel parameters of individual pixels of the image may be determined. Individual average parameter values of the individual pixel parameters of the pixels in the individual pixel rows may be determined. Based on the average parameter values a pixel row may be identified as depicting a horizon in the image.

FIELD

This disclosure relates to systems and methods configured to identify ahorizon in an image.

BACKGROUND

Identifying a horizon depicted in an image may be useful for applyingimage effects. For example, a horizon may be used for as a referencepoint for applying one or more of text, text effects (e.g., scrolling,rising up, and/or other text effects), transition effects (e.g., betweenimages), and/or other image effects to an image.

SUMMARY

This disclosure relates systems and methods configured to identify ahorizon in an image. In some implementations, a horizon may refer to oneor more of a visible line on an image at which the earth's surface(e.g., land or water) and the sky appear to meet and/or a line intendedto depict where the earth's surface and the sky appear to meet (e.g.,irrespective of a visible demarcating line being depicted in the image).Information defining an image may be obtained. The information definingthe image may include, for example, an image file. The image file may beobtained from electronic storage of one or more image capture devicesand/or other storage locations.

A system that identifies a horizon in an image may include one or morephysical processors and/or other components. The one or more physicalprocessors may be configured by machine-readable instructions. Executingthe machine-readable instructions may cause the one or more physicalprocessors to facilitate identifying a horizon in an image. Themachine-readable instructions may include one or more computer programcomponents. The computer program components may include one or more ofan image component, a parameter component, an identification component,an effects component, and/or other computer program components.

The image component may be configured to obtain information defining oneor more images. An image may include visual content. The visual contentmay be presented in the form of an array of pixels of the image. Anindividual array of pixels may include multiple pixel rows. Theinformation defining the image may define individual colors ofindividual pixels.

The parameter component may be configured to determine parameter valuesfor pixel parameters of individual pixels of an image. By way ofnon-limiting illustration, the pixel parameters may include one or moreof a first pixel parameter, a second pixel parameter, and/or other pixelparameters.

The parameter component may be configured to determine, for individualpixel rows in a pixel array of an image, individual average parametervalues of the parameter values of the individual pixel parameters of thepixels in the individual pixel rows. By way of non-limitingillustration, for a first pixel row, the parameter component may beconfigured to determine one or more of a first average parameter valueof the first pixel parameter, a second average parameter value of thesecond pixel parameter, and/or other average parameter values of theparameter values of the individual pixel parameters of the pixels in thefirst pixel row.

The identification component may be configured to identify, based on theindividual average parameter values of the individual pixel parametersof pixels in the individual pixel rows, a pixel row as depicting ahorizon in an image.

The effects component may be configured to effectuate one or more imageeffects on individual images based on individual identified pixel rows.

These and other objects, features, and characteristics of the systemand/or method disclosed herein, as well as the methods of operation andfunctions of the related elements of structure and the combination ofparts and economies of manufacture, will become more apparent uponconsideration of the following description and the appended claims withreference to the accompanying drawings, all of which form a part of thisspecification, wherein like reference numerals designate correspondingparts in the various figures. It is to be expressly understood, however,that the drawings are for the purpose of illustration and descriptiononly and are not intended as a definition of the limits of theinvention. As used in the specification and in the claims, the singularform of “a”, “an”, and “the” include plural referents unless the contextclearly dictates otherwise.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a system configured to identify a horizon in animage, in accordance with one or more implementations.

FIG. 2 illustrates a method of identifying a horizon in an image, inaccordance with one or more implementations.

FIG. 3 illustrates an exemplary image.

FIG. 4 illustrates an exemplary image.

FIG. 5 illustrates a text effect applied to an image having a row ofpixels identified as depicting a horizon.

FIG. 6 illustrates an exemplary matrix of average parameter valuesgenerated for an image having three pixel rows, in accordance with oneor more implementations.

DETAILED DESCRIPTION

FIG. 1 illustrates a system 10 configured to identify a horizon in animage, in accordance with one or more implementations. System 10 mayinclude one or more of a processor 11, electronic storage 12, interface13 (e.g., bus, wireless interface, etc.), and/or other components.Electronic storage 12 may include electronic storage medium thatelectronically stores information. Electronic storage 12 may storesoftware algorithms, information determined by processor 11, informationreceived remotely, and/or other information that enables system 10 tofunction properly. For example, electronic storage 12 may storeinformation related to one or more of images, videos, image exemplars,and/or other information.

Processor 11 may be configured to provide information processingcapabilities in system 10. As such, processor 11 may comprise one ormore of a digital processor, an analog processor, a digital circuitdesigned to process information, a central processing unit, a graphicsprocessing unit, a microcontroller, an analog circuit designed toprocess information, a state machine, and/or other mechanisms forelectronically processing information. Processor 11 may be configured bymachine readable instructions 100. Executing machine-readableinstructions 100 may cause processor 11 to identify a horizon in animage. Machine-readable instructions 100 may include one or morecomputer program components. Machine readable instructions 100 mayinclude one or more of an image component 102, a parameter component104, an identification component 106, an effects component 108, and/orother computer program components.

In some implementations, processor 11 may be included in one or more ofa server (not shown), a computing platform (not shown), a capture device(not shown), and/or other devices. By way of non-limiting illustration,a server may include processor 11 and may communicate with computingplatforms via client/server architecture and/or other communicationscheme. The server may be configured to provide features and/orfunctions of processor 11 to users via computing platforms. In someimplementations, one or more features and/or functions of processor 11may be attributed to individual computing platforms associated withusers. By way of non-limiting illustration, individual computingplatforms may obtain machine-readable instructions that are the same orsimilar to machine-readable instructions 100 such that features and/orfunctions of processor 11 may be carried out locally at the individualcomputing platforms. In some implementations, one or more featuresand/or functions of processor 11 may be attributed to individual capturedevices. By way of non-limiting illustration, individual capture devicesmay obtain machine-readable instructions that are the same or similar tomachine-readable instructions 100 such that features and/or functions ofprocessor 11 may be carried out locally at the individual capturedevices. A computing platform may include one or more of a desktopcomputer, a laptop computer, a smartphone, a tablet computer, and/orother computing platform. It is noted that in some implementations,system 10 may include one or more of one or more servers, one or morecomputing platforms, one or more capture devices, and/or othercomponents described herein yet not explicitly shown in FIG. 1.

Image component 102 may be configured to obtain information defining oneor more images, and/or other information. Information defining an imagemay include, for example, an image file. An image file may be obtainedfrom electronic storage of one or more capture devices and/or otherstorage locations. An image may include visual content and/or othercontent. The visual content of an image may be in the form of a pixelarray. Information defining an image may define colors of individualpixels in a pixel array of the image. In some implementations, a pixelarray may include multiple pixel rows, and/or other configurations ofpixels.

In some implementations, visual content may be defined by one or more ofreal-world visual information, electronic information, playbackinformation, and/or other information. Real-world visual information maycomprise information related to light and/or electromagnetic radiationincident on an image sensor of a capture device, and/or otherinformation. Electronic information may comprise information related toinformation stored by in electronic storage that conveys the lightand/or electromagnetic radiation incident on an image sensor and mayconstitute a conversion of the real-world visual information toinformation suitable for electronic storage. Playback information maycomprise information that may facilitate visual reproduction of thecaptured real-world visual information on a computing platform and/orother display device for viewing by a user, and/or other information. Byway of non-limiting example, playback information may comprise adifferent format of the electronic information that may be readable by aplayback device (e.g., a computing platform and/or other devices).

In some implementations, an image may depict a scene. The scene mayinclude scene content. The scene content may include depictions of oneor more of people, objects, sky, landscapes, ocean, a horizon, and/orother content. In some implementations, a horizon may refer to one ormore of a visible line within an image at which the earth's surface andthe sky appear to meet and/or a line intended to depict where theearth's surface and the sky meet. A horizon may comprise a straightline. A horizon may extend horizontally across a plane of an image. Insome implementations, a horizon may be identified in an image whether ornot a demarcating line may be visible in the image. By way ofnon-limiting illustration, an image depicting a mountain landscape maynot visibly depict a horizontal horizon line, however, a row of pixelsmay be identified as a line intending to depict a horizon.

In some implementations, individual pixel colors may be specified byvalues of one or more color components (also referred to as “colorchannels”), and/or other information. For example, individual colors maybe specified with respect to a color space and/or other specifications.A color space may include one or more of an RGB color space, sRGB colorspace, an RGBY colors pace, a CMYK color space, and/or other color spacerepresentations. A color specified within a color space may be definedby chromaticities of different color components associated with thespace, and/or other information. For example, an RGB color space mayspecify color component values by chromaticities of red, green, and/orblue additive components (e.g., a red color channel, a green colorchannel, and a blue color channel); and an RGBY color space may specifycolor component values by chromaticities of red, green, blue, and yellowcomponents (e.g., a red color channel, a green color channel, a bluecolor channel, and a yellow color channel). In some implementations, acomponent within a color space may further include a luminancecomponent. A value of a luminance component may specify a luminousintensity of a pixel, and/or other information.

In some implementations, information defining one or more images may beobtained from information defining one or more videos. Informationdefining a video may include, for example, a video file. A video filemay be obtained from electronic storage of one or more capture devicesand/or other storage locations. A video may include one or more ofvisual content, audio content, and/or other content. The visual contentmay be in the form of individual pixel arrays of individual frame imagesin a set of multiple frame images. Information defining a video maydefine colors of individual pixels in individual pixel arrays ofindividual frame images. The multiple frame images may be presented inan ordered sequence. The audio content may include recorded and/orprovided audio that may accompany visual content. The audio content maybe synchronized with visual content.

A capture device information may include one or more sensors coupled tothe capture device, and/or other components. A capture device may beconfigured for one or both of video capture and/or image capture. Insome implementations, sensors coupled to a capture device may includeone or more of an image sensor, a geo-location sensor, orientationsensor, accelerometer, and/or other sensors. An image sensor may beconfigured to generate output signals conveying light and/orelectromagnetic radiation incident on the image sensor, and/or otherinformation. In some implementations, an image sensor may comprise oneor more of a photosensor array (e.g., an array of photosites), acharge-coupled device sensor, an active pixel sensor, a complementarymetal-oxide semiconductor sensor, an N-type metal-oxide-semiconductorsensor, and/or other image sensors. A geo-location sensor may generateoutput signals conveying location(s) of a capture device. An orientationsensor may be configured to generate output signals conveyingorientation of a capture device and/or entity moving with a capturedevices. An accelerometer may be configured to generate output signalsconveying physical acceleration experienced by a capture device and/orentity moving with the capture device.

Image component 102 may be configured to obtain information defining oneor more images from one or more storage locations. A storage locationmay include electronic storage 12, electronic storage of one or morecapture devices (not shown in FIG. 1), electronic storage of one or morecomputing platforms (not shown in FIG. 1), and/or other storagelocations. Image component 102 may be configured to obtain informationdefining one or more images during acquisition of the information and/orafter acquisition of the information by one or more capture devices. Forexample, image component 102 may obtain information defining one or moreimages while the one or more images are being captured by one or morecapture devices. Image component 102 may obtain information defining oneor more images after the one or more images have been captured and/orstored in memory (e.g., electronic storage 12, etc.). In someimplementations, one or more videos may be characterized by one or moreencoded framerates. An encoded framerate may define a number of frameimages within a video per a time duration (e.g., number of frame imagesper second, etc.).

While one or more implementations of features present in this disclosuremay be directed to individual images, one or more other implementationsof the system may be configured for other types media content. Othertypes of media content may include one or more of multimediapresentations, photos, slideshows, burst shot images, and/or other mediacontent.

Parameter component 104 may be configured to determine one or moreparameter values for pixel parameters of individual pixels of individualimages. The pixel parameters may include a set of pixel parameters. Theset of pixel parameters may include one or more of color parameters,image gradient parameters, and/or other pixel parameters.

Individual parameter values of color parameters of individual pixels mayspecify one or more of chromaticity of individual color components ofindividual pixels, luminous intensity of individual color components ofindividual pixels, and/or other information. For example, colorparameters may include one or more of a first color parameter, a secondcolor parameter, a third color parameter, a fourth color parameter,and/or other color parameters.

A parameter value of the first color parameter may specify one or moreof a chromaticity of a first color component of an individual pixel, aluminous intensity of the first color component of an individual pixel,and/or other information. By way of non-limiting illustration, in anRGBY color space, the first color component may be the red colorcomponent (e.g., red color channel); and a parameter value of the firstcolor parameter may specify one or more of a chromaticity of the redcolor component, a luminous intensity of the red color component, and/orother information.

A parameter value of the second color parameter may specify one or moreof a chromaticity of a second color component of an individual pixel, aluminous intensity of the second color component of an individual pixel,and/or other information. By way of non-limiting illustration, in anRGBY color space, the second color component may be the green colorcomponent (e.g., green color channel); and a parameter value of thesecond color parameter may specify one or more of a chromaticity of thegreen color component, a luminous intensity of the green colorcomponent, and/or other information.

A parameter value of the third color parameter may specify one or moreof a chromaticity of a third color component of an individual pixel, aluminous intensity of the third color component of an individual pixel,and/or other information. By way of non-limiting illustration, in anRGBY color space, the third color component may be the blue colorcomponent (e.g., blue color channel); and a parameter value of the thirdcolor parameter may specify one or more of a chromaticity of the bluecolor component, a luminous intensity of the blue color component,and/or other information.

A parameter value of the fourth color parameter may specify one or moreof a chromaticity of a fourth color component of an individual pixel, aluminous intensity of the fourth color component of an individual pixel,and/or other information. By way of non-limiting illustration, in anRGBY color space, the fourth color component may be the yellow colorcomponent (e.g., yellow color channel); and a parameter value of thefourth color parameter may specify one or more of a chromaticity of theyellow color component, a luminous intensity of the yellow colorcomponent, and/or other information. It is noted that for other colorspace representations of colors, the quantity and/or type of colorparameters may be more or less than those described above.

Individual parameter values of individual image gradient parameters mayspecify one or more of an image gradient at a pixel in a firstdirection, an image gradient at a pixel in a second direction, amagnitude of an image gradient, and/or other information. For example,image gradient parameters may include one or more of a first imagegradient parameter, a second image gradient parameter, a gradientmagnitude parameter, and/or other parameters. The first image gradientparameter may correspond to an image gradient in a first direction; thesecond image gradient parameter may correspond to an image gradient in asecond direction; and the gradient magnitude parameter may correspond toa magnitude of an image gradient.

In some implementations, image gradient may refer directional change inone or both of intensity or color of an image. In some implementations,image gradient at individual pixels may comprise a 2D vector with vectorcomponents given by derivatives in a first direction (e.g., horizontaldirection) and a second direction (e.g., vertical direction). Atindividual pixels, an image gradient vector may point in a direction ofa largest possible intensity increase, and/or a length of the gradientvector may correspond to a rate of change in that direction.

Parameter component 104 may be configured to determine individual imagegradients of individual images. In some implementations, an imagegradient in a first direction, a second direction and/or a magnitude ofimage gradient may be determined from an image by applying one or morefilters to the image, and/or by other techniques. A filter may includeone or more of a Sobel filter, Sobel-Feldman filter, Scharr filter,Roberts Cross filter, Prewitt filter, Laplacian filter, Gabor filter,DoG (difference of Gaussians) filters, DoH (determinant of Hessian)filter, and/or other techniques.

Parameter component 104 may be configured to determine, for individualpixel rows in individual pixel arrays of individual images, individualsecondary parameter values of the individual pixel parameters of thepixels in the individual pixel rows. A secondary parameter value maycomprise one or more of an average of parameter values of individualpixel parameters of pixels in individual pixel rows, a weighted averageof parameter values of individual pixel parameters of pixels inindividual pixel rows, a median of parameter values of individual pixelparameters of pixels in individual pixel rows, a mode of parametervalues of individual pixel parameters of pixels in individual pixelrows, statistics on neighborhood information, entropy of the row, and/orother secondary measures of parameter values of an individual parametervalue of pixels in individual pixel rows.

By way of non-limiting illustration, an image may comprise an array ofpixels having multiple pixel rows. The pixel rows may include a firstpixel row and/or other pixel rows. The first pixel row may comprisemultiple pixels. For the first pixel row, parameter component 104 may beconfigured to determined one or more of a first set of parameter valuesof a first pixel parameter of the pixels in the first pixel row, asecond set of parameter values of a second pixel parameter of the pixelsin the first pixel row, a third set of parameter values of a third pixelparameter of the pixels in the first pixel row, a fourth set ofparameter values of a fourth pixel parameter of the pixels in the firstpixel row, a fifth set of parameter values of a fifth pixel parameter ofthe pixels in the first pixel row, a sixth set of parameter values of asixth pixel parameter of the pixels in the first pixel row, a seventhset of parameter values of a seventh pixel parameter of the pixels inthe first pixel row, and/or more or fewer parameter values.

Parameter component 104 may be configured to determine, for the firstpixel row, one or more of a first average parameter value of the firstset of parameter values, a second average parameter value of the secondset of parameter values, a third average parameter value of the thirdset of parameter values, a fourth average parameter value of the fourthset of parameter values, a fifth average parameter value of the fifthset of parameter values, a sixth average parameter value of the sixthset of parameter values, a seventh average parameter value of theseventh set of parameter values, and/or other secondary parametervalues. In some implementations, the first pixel parameter may comprisea first color parameter, the second pixel parameter may comprise asecond color parameter, the third pixel parameter may comprise a thirdcolor parameter, the fourth pixel parameter may comprise a fourth colorparameter, the fifth pixel parameter may comprise a first image gradientparameter, the sixth pixel parameter may comprise a second imagegradient parameter, and/or the seventh pixel parameter may comprise agradient magnitude parameter.

While the above illustrates determining average parameter values, inother implementations, other secondary parameter values of pixelparameters of pixels in individual pixel rows may be determined.

Identification component 106 may be configured to identify individualpixel rows in individual images as depicting a horizon. In someimplementations, a pixel row may be identified within an image based onone or more secondary parameter values of individual pixel parameters ofpixels in individual pixel rows of the image. For example,identification component 106 may be configured to identify a pixel rowas depicting a horizon in the image based on average parameter values ofindividual pixel parameters of pixels in the individual pixel rows.

In some implementations, one or more pixel rows may be identified asdepicting a horizon in an image by one or more machine learningtechniques, and/or other techniques. Machine learning techniques mayinclude one or more of a convolutional neural network, decision treelearning, supervised learning, minimax algorithm, unsupervised learning,semi-supervised learning, reinforcements learning, deep learning,artificial neural networks, support vector machine, clusteringalgorithms, genetic algorithms, random forest, and/or other techniques.In some implementations, one or more user-provided exemplars of imageshaving one or more user-identified pixel rows that depict a horizon maybe utilized at an initialization or training stage of a machine learningprocess. The user-provided exemplars may include identifications of oneor more pixel rows in individual images as being a horizon depicted inthe image. Parameter values and/or secondary parameter values of one ormore pixel parameters of the identified pixels rows in the user-providedexemplars may be determined. The parameter values and/or secondaryparameter values of the identified pixels rows may be used to train amachine learning process to identify a pixel row as depicting a horizon.A quantity of exemplars suitable to train a machine-learning network maybe provided, for example, one or more of 1,000 images, 10,000 images,100,000 images, 1,000,000 images, and/or other quantities of imageshaving user-identified pixels rows.

In some implementations, information input into a trained machinelearning process may include secondary parameter values (e.g., averageparameter values and/or other secondary parameters) of individual pixelparameters of pixels in individual pixel rows of an image (e.g.,determined from parameter component 104). In some implementations, thesecondary parameter values may be input as a matrix, wherein individualrows in the matrix correspond to individual pixel rows of an image, andindividual values in individual columns of the matrix compriseindividual secondary pixel values of individual pixel parameters in aset of pixel parameters. A trained machine learning process may beconfigured to classify individual rows in the matrix (e.g.,corresponding to individual rows of pixels) as either being indicativeof a horizon or not. In some implementations, a set of multiple rows inan image may be classified as depicting a horizon. In someimplementations, a single row in a set of rows may be identified as thehorizon based on one or more of user selection, gradient analysis,selecting a middle row, random selection, and/or other techniques.

By way of non-limiting illustration in FIG. 6, consider an image 600with 3 pixel rows; and a set of pixel parameters (e.g., labeled P1, P2,P3, and P4). The set of pixel parameters may comprise one or more of oneto four color parameters, an image gradient parameter in one direction,an image gradient parameter in another direction, a magnitude of animage gradient parameter, and/or other parameters. Parameter component104 (FIG. 1) may be configured to determine secondary parameter values(e.g., an average) of individual pixel parameters of pixels inindividual ones of the pixel rows. In this example, parameter component104 may be configured to determined four secondary parameter values ofthe set of pixel parameters (e.g., labeled P1_av, P2_av, P3_av, andP4_av) for individual ones of the pixel rows. Identification component106 (FIG. 1) may be configured to generate a matrix 602 that has threerows (e.g., corresponding to individual ones of the three pixel rows)and four columns (e.g., corresponding to individual ones of the foursecondary parameter values).

It is noted the image and matrix shown in FIG. 6 is for illustrativepurposes only and not to be considered limiting. For example, in someimplementations an image may comprise more than three rows; and a matrixmay be generated using secondary parameter values of a set of pixelparameters comprising more than four pixel parameters. By way ofnon-limiting illustration, a set of pixel parameters may include sevenpixel parameters comprising four color parameters, an image gradientparameter in one direction, an image gradient parameter in anotherdirection, and a magnitude of an image gradient parameter.

Returning to FIG. 1, in some implementations, an array of pixels of anindividual image may be split into a set of sub-arrays of pixels. Anindividual sub-array of pixels may correspond to an individual verticalstrip of the individual image. In some implementations, the array ofpixels of the individual image may be split into “N” sub-arrays ofpixels. For example, an image may be split into “N” vertical strips,wherein individual strips may include an individual sub-array or pixels.For example, an image may be split into 3 (e.g., N=3) vertical strips(or other amounts) forming 3 sub-arrays of pixels. The parametercomponent 104 may be configured to determine, for individual pixel rowsin individual sub-arrays of pixels, individual secondary parametervalues of the individual pixel parameters of the pixel rows in theindividual sub-arrays of pixels. The identification component 106 may beconfigured to use the individual secondary parameter values determinedfor the individual rows in the individual sub-arrays of pixels as inputinto a machine learning process to identify a horizon in the image. Themachine learning process may be trained in a similar manner. The ideabehind this is that it may bring some locality into the input providedto the machine learning process.

By way of non-limiting illustration, consider an array of pixels of animage. The image may be split into N vertical strips such that the arrayof pixels may be split into N sub-arrays of pixels. For individual pixelrows in individual ones of the sub-arrays of pixels, parameter componentmay be configured to determine individual secondary parameter values ofthe individual pixel parameters. If M pixel parameters are used, thenindividual pixel rows may have M×N secondary parameter values used asinput into the machine learning process. By way of non-limitingillustration, the image may include a first row of pixels that may spanthe width of the image. Consequently, the first row (along with otherrows) may be split into N segments of the first row. For example, ifN=3, the first row of pixels may be split into 3 segments (e.g., a firstsegment, a second segment, and a third segment). For individualsegments, individual secondary parameter values of the individual pixelparameters may be determined and used as input into a machine learningprocess. For example, the first row may be assigned a first set ofsecondary parameter values of the individual pixel parameters determinedfrom the first segment, a second set of secondary parameter values ofthe individual pixel parameters determined from the second segment, anda third set of secondary parameter values of the individual pixelparameters determined from the third segment. Other rows of the imagemay be handled similarly.

FIG. 3 illustrates an exemplary image 300 used for horizonidentification using one or more implementations of system 100 (FIG. 1)presented herein. The image 300 may depict a scene, for example, a beachscene including depictions of sky 304, ocean 306, land 308, and/or otherscene content. The image 300 may depict a horizon 302 in the form of ahorizontal line extending across the image. The horizon 302 may comprisea line at which the earth's surface (e.g., ocean 306) and sky 304 appearto meet. One or more implementations of system 100 (FIG. 1) may beconfigured to identify a row of pixels corresponding to horizon 302.

FIG. 4 illustrates an exemplary image 400 used for horizonidentification using one or more implementations of system 100 (FIG. 1)presented herein. The image 400 may depict a scene, for example, amountain landscape including depictions of sky 404, mountain range 406,and/or other scene content. The image 400 may not explicitly depict avisible horizon comprising a horizontal demarcation line. One or moreimplementations of system 100 (FIG. 1) may be configured to identify arow of pixels corresponding to a line 402 as “depicting” a horizon inthe image 400.

Returning to FIG. 1, effects component 108 may be configured toeffectuate one or more image effects on individual images based onindividual identified pixel rows. Image effects may include one or moreof text, text effects, transition effects, and/or other image effects.Image effects may be determined through user input via one or more imageediting interfaces and/or applications (not shown in FIG. 1). In someimplementations, effectuating one or more image effects on individualimages based on individual identified pixel rows may comprise utilizingindividual identified pixel rows as a reference line for image effects.Utilizing individual identified pixel rows as a reference line for textand/or text effects may comprise overlaying text at or near theindividual identified pixel rows, scrolling text across the individualidentified pixel rows, scrolling text above and/or below the individualidentified pixel rows. Utilizing individual identified pixel rows as areference line for transition effects may comprise fading in and/or outof an image at an identified pixel rows, horizontal flip, verticalreflection, adjust position of the crop based on identified pixel rows,and/or other transition effects.

By way of non-limiting illustration in FIG. 5, image 300 is shown havinga text effect 500 applied to image 300 using a row of pixels identifiedas depicting horizon 302. The text effect 500 may include scrolling textthat may appear from behind horizon 302 as it scrolls upward. It isnoted that text effect 500 shown in FIG. 5 is for illustrative purposesonly and is not to be considered limiting. For example, in otherimplementations, other image effects may be applied to images using arow of pixels that may be identified as depicting a horizon.

Returning to FIG. 1, although processor 11 and electronic storage 12 areshown to be connected to an interface 13 in FIG. 1, any communicationmedium may be used to facilitate interaction between any components ofsystem 10. One or more components of system 10 may communicate with eachother through hard-wired communication, wireless communication, or both.For example, one or more components of system 10 may communicate witheach other through a network. For example, processor 11 may wirelesslycommunicate with electronic storage 12. By way of non-limiting example,wireless communication may include one or more of radio communication,Bluetooth communication, Wi-Fi communication, cellular communication,infrared communication, or other wireless communication. Other types ofcommunications are contemplated by the present disclosure.

Although processor 11 is shown in FIG. 1 as a single entity, this is forillustrative purposes only. In some implementations, processor 11 maycomprise a plurality of processing units. These processing units may bephysically located within the same device, or processor 11 may representprocessing functionality of a plurality of devices operating incoordination. Processor 11 may be configured to execute one or morecomponents by software; hardware; firmware; some combination ofsoftware, hardware, and/or firmware; and/or other mechanisms forconfiguring processing capabilities on processor 11.

It should be appreciated that although computer components areillustrated in FIG. 1 as being co-located within a single processingunit, in implementations in which processor 11 comprises multipleprocessing units, one or more of computer program components may belocated remotely from the other computer program components.

The description of the functionality provided by the different computerprogram components described herein is for illustrative purposes, and isnot intended to be limiting, as any of computer program components mayprovide more or less functionality than is described. For example, oneor more of computer program components 102, 104, 106, and/or 108 may beeliminated, and some or all of its functionality may be provided byother computer program components. As another example, processor 11 maybe configured to execute one or more additional computer programcomponents that may perform some or all of the functionality attributedto one or more of computer program components 102, 104, 106, and/or 108described herein.

The electronic storage media of electronic storage 12 may be providedintegrally (i.e., substantially non-removable) with one or morecomponents of system 10 and/or removable storage that is connectable toone or more components of system 10 via, for example, a port (e.g., aUSB port, a Firewire port, etc.) or a drive (e.g., a disk drive, etc.).Electronic storage 12 may include one or more of optically readablestorage media (e.g., optical disks, etc.), magnetically readable storagemedia (e.g., magnetic tape, magnetic hard drive, floppy drive, etc.),electrical charge-based storage media (e.g., EPROM, EEPROM, RAM, etc.),solid-state storage media (e.g., flash drive, etc.), and/or otherelectronically readable storage media. Electronic storage 12 may includeone or more virtual storage resources (e.g., cloud storage, a virtualprivate network, and/or other virtual storage resources). Electronicstorage 12 may be a separate component within system 10, or electronicstorage 12 may be provided integrally with one or more other componentsof system 10 (e.g., processor 11). Although electronic storage 12 isshown in FIG. 1 as a single entity, this is for illustrative purposesonly. In some implementations, electronic storage 12 may comprise aplurality of storage units. These storage units may be physicallylocated within the same device, or electronic storage 12 may representstorage functionality of a plurality of devices operating incoordination.

FIG. 2 illustrates method 200 of identifying a horizon in an image, inaccordance with one or more implementations. The operations of method200 presented below are intended to be illustrative. In someimplementations, method 200 may be accomplished with one or moreadditional operations not described, and/or without one or more of theoperations discussed. In some implementations, two or more of theoperations may occur substantially simultaneously.

In some implementations, method 200 may be implemented in a computersystem comprising one or more of one or more processing devices (e.g., adigital processor, an analog processor, a digital circuit designed toprocess information, a central processing unit, a graphics processingunit, a microcontroller, an analog circuit designed to processinformation, a state machine, and/or other mechanisms for electronicallyprocessing information), non-transitory electronic storage storingmachine-readable instructions, and/or other components. The one or moreprocessing devices may include one or more devices executing some or allof the operations of method 200 in response to instructions storedelectronically on one or more electronic storage media. The one or moreprocessing devices may include one or more devices configured throughhardware, firmware, and/or software to be specifically designed forexecution of one or more of the operations of method 200.

Referring to FIG. 2 and method 200, at operation 201, informationdefining one or more images may be obtained. Individual images mayinclude visual content and/or other content. The visual content maycomprise an array of pixels. The information defining an individualimage may define individual colors for individual pixels in a pixelarray of the image. An array of pixels may include multiple pixel rows.In some implementations, operation 201 may be performed by a processorcomponent the same as or similar to image component 102 (shown in FIG. 1and described herein).

At operation 202, parameter values for a set of pixel parameters ofindividual pixels of individual images may be determined. The set ofpixel parameters may include a first pixel parameter and/or other pixelparameters. In some implementations, operation 202 may be performed by aprocessor component the same as or similar to parameter component 104(shown in FIG. 1 and described herein).

At operation 203, for individual pixel rows, individual averageparameter values of the individual pixel parameters of pixels inindividual pixel rows may be determined. By way of non-limitingillustration, for a first pixel row, a first average parameter value ofthe first pixel parameter and/or other average parameter values of otherpixel parameters may be determined. In some implementations, operation203 may be performed by a processor component the same as or similar toparameter component 104 (shown in FIG. 1 and described herein).

At operation 204, individual pixel rows in individual images may beidentified as depicting a horizon in the individual images. Theidentification may be based on average parameter values of individualpixel parameters of pixels in individual pixel rows of individualimages. In some implementations, operation 204 may be performed by aprocessor component the same as or similar to identification component106 (shown in FIG. 1 and described herein).

Although the system(s) and/or method(s) of this disclosure have beendescribed in detail for the purpose of illustration based on what iscurrently considered to be the most practical and preferredimplementations, it is to be understood that such detail is solely forthat purpose and that the disclosure is not limited to the disclosedimplementations, but, on the contrary, is intended to covermodifications and equivalent arrangements that are within the spirit andscope of the appended claims. For example, it is to be understood thatthe present disclosure contemplates that, to the extent possible, one ormore features of any implementation can be combined with one or morefeatures of any other implementation.

What is claimed is:
 1. A system configured to identify a horizon in animage, the system comprising: one or more physical processors configuredby machine-readable instructions to: obtain information defining animage, the image comprising an array of pixels, the array includingpixel rows; determine parameter values for a set of pixel parameters ofindividual pixels in the array; determine secondary parameter values forthe set of pixel parameters of individual pixel rows in the array basedon an average, a weighted average, a median, a mode, and/or an entropyof corresponding parameter values of the pixels in the individual pixelrows; identify one or more pixel rows of the image as depicting thehorizon in the image based on the secondary parameter values; andeffectuate an image effect based on the identification of the one ormore pixel rows of the image as depicting the horizon in the image. 2.The system of claim 1, wherein the set of pixel parameters includes oneor more of a first color parameter, a second color parameter, a thirdcolor parameter, a fourth color parameter, a first image gradientparameter, a second image gradient parameter, or a gradient magnitudeparameter.
 3. The system of claim 2, wherein the first color parametercorresponds to a first color component of individual colors of pixels inthe array, the second color parameter corresponds to a second colorcomponent of the individual colors of the pixels in the array, the thirdcolor parameter corresponds to a third color component of the individualcolors of the pixels in the array, the fourth color parametercorresponds to a fourth color component of the individual colors of thepixels in the array, the first image gradient parameter corresponds toan image gradient at the individual pixels in the array in a firstdirection, the second image gradient parameter corresponds to an imagegradient at the individual pixels in the array in a second direction,and the gradient magnitude parameter corresponds to a magnitude of theimage gradient at the individual pixels in the array.
 4. The system ofclaim 3, wherein the first color component, second color component,third color component, and fourth color component correspond toindividual colors channels within an RGBY color space, and whereinparameter values of the first color component, second color component,third color component, and fourth color component are luminousintensities associated with the individual color channels.
 5. The systemof claim 1, wherein the one or more physical processors are furtherconfigured by machine-readable instructions to determine an imagegradient of the image.
 6. The system of claim 1, wherein the imageeffect includes an overlaying of text at or near the one or more pixelrows, a scrolling of text across the one or more pixel rows, a scrollingof text above or below the one or more pixel rows, a fading in or afading out at the one or more pixel rows, or an adjustment of cropposition based on the one or more pixel rows.
 7. The system of claim 1,wherein the image depicts a scene including scene content, wherein theone or more pixel rows are identified as depicting the horizon in theimage based on the scene content at the one or more pixel rows includinga visual depiction of the horizon.
 8. The system of claim 1, wherein theimage depicts a scene including scene content, wherein the one or morepixel rows are identified as depicting the horizon in the imageirrespective of the scene content including a visual depiction of thehorizon.
 9. The system of claim 1, wherein identifying the one or morepixel rows as depicting the horizon comprises identifying, based on thesecondary parameter values of the individual pixel parameters of thepixels in the individual pixel rows, a set of pixel rows and selectingthe one or more pixel rows from the set of pixel rows.
 10. The system ofclaim 1, wherein identifying the one or more pixel rows as depicting thehorizon in the image comprises generating a matrix, the matrix havingrows corresponding to individual pixel rows and columns corresponding toindividual secondary parameter values of individual pixel parameters inthe set of pixel parameters.
 11. A method of identifying a horizon in animage, the method being implemented in a computer system comprising oneor more physical processors and non-transitory electronic storage mediastoring machine-readable instructions, the method comprising: obtaininginformation defining an image, the image comprising an array of pixels,the array including pixel rows; determining parameter values for a setof pixel parameters of individual pixels in the array; determiningsecondary parameter values for the set of pixel parameters of individualpixel rows in the array based on an average, a weight average, a median,a mode, and/or an entropy of corresponding parameter values of thepixels in the individual pixel rows; identifying one or more pixel rowsof the image as depicting the horizon in the image based on thesecondary parameter values; and effectuating an image effect based onthe identification of the one or more pixel rows of the image asdepicting the horizon in the image.
 12. The method of claim 11, whereinthe set of pixel parameters includes one or more of a first colorparameter, a second color parameter, a third color parameter, a fourthcolor parameter, a first image gradient parameter, a second imagegradient parameter, or a gradient magnitude parameter.
 13. The method ofclaim 12, wherein the first color parameter corresponds to a first colorcomponent of individual colors of pixels in the array, the second colorparameter corresponds to a second color component of the individualcolors of the pixels in the array, the third color parameter correspondsto a third color component of the individual colors of the pixels in thearray, the fourth color parameter corresponds to a fourth colorcomponent of the individual colors of the pixels in the array, the firstimage gradient parameter corresponds to an image gradient at theindividual pixels in the array in a first direction, the second imagegradient parameter corresponds to an image gradient at the individualpixels in the array in a second direction, and the gradient magnitudeparameter corresponds to a magnitude of the image gradient at theindividual pixels in the array.
 14. The method of claim 13, wherein thefirst color component, second color component, third color component,and fourth color component correspond to individual colors channelswithin an RGBY color space, and wherein parameter values of the firstcolor component, second color component, third color component, andfourth color component are luminous intensities associated with theindividual color channels.
 15. The method of claim 11, furthercomprising determining an image gradient of the image.
 16. The method ofclaim 11, wherein the image effect includes an overlaying of text at ornear the one or more pixel rows, a scrolling of text across the one ormore pixel rows, a scrolling of text above or below the one or morepixel rows, a fading in or a fading out at the one or more pixel rows,or an adjustment of crop position based on the one or more pixel rows.17. The method of claim 11, wherein the image depicts a scene includingscene content, wherein the one or more pixels rows are identified asdepicting the horizon in the image based on the scene content at the oneor more pixel rows including a visual depiction of the horizon.
 18. Themethod of claim 11, wherein the image depicts a scene including scenecontent, wherein the one or more pixel rows are identified as depictingthe horizon in the image irrespective of the scene content including avisual depiction of the horizon.
 19. The method of claim 11, whereinidentifying the one or more pixel rows as depicting the horizoncomprises identifying, based on the secondary parameter values of theindividual pixel parameters of the pixels in the individual pixel rows,a set of pixel rows, and selecting the one or more pixel rows from theset of pixel rows.
 20. The method of claim 11, wherein identifying theone or more pixel rows as depicting the horizon in the image comprisesgenerating a matrix, the matrix having rows corresponding to individualpixel rows and columns corresponding to individual secondary parametervalues of individual pixel parameters in the set of pixel parameters.